home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / sprprcdr.lha / CopyBob.AMOS / CopyBob.amosSourceCode
AMOS Source Code  |  1996-01-26  |  3KB  |  75 lines

  1. '   AMOSPro
  2. '
  3. '   ******************************************************** 
  4. '   ***                                                  *** 
  5. '   ***                Copy Bob Procedure                *** 
  6. '   ***                                                  *** 
  7. '   ***                        by                        *** 
  8. '   ***                                                  *** 
  9. '   ***                   Joseph Bolin                   *** 
  10. '   ***                                                  *** 
  11. '   ******************************************************** 
  12.  
  13. Screen Open 0,320,200,4,Lowres
  14. Palette $0,$F00,$80
  15. Curs Off : Cls 2 : Ink 1 : Circle 8,8,7 : Paint 8,8
  16. Get Icon 1,0,0 To 17,17
  17. Cls 0
  18. _COPYBOB[-1,2]
  19. Paste Icon 16,16,1
  20. Paste Bob 64,64,2
  21.  
  22. Procedure _COPYBOB[_SRCBOB,_DESTBOB]
  23.    
  24.    ' Inputs:  _SRCBOB =Source image --- negative numbers signify icons    
  25.    '          _DESTBOB=Destination image --- negative numbers signify icons 
  26.    '
  27.    ' Output:  Copys one bob to another, including mask. 
  28.    '          There must either be a screen open with as many colors as the   
  29.    '          source bob and at least as large as it, or there must be an 
  30.    '          unopened screen.  
  31.    '          You may copy from a bob to an icon or from an icon to a bob 
  32.  
  33.    If _SRCBOB>=0 Then SRCBASE=Sprite Base(_SRCBOB) Else SRCBASE=Icon Base(-_SRCBOB)
  34.    If SRCBASE=0 Then Error 68
  35.    If _SRCBOB>=0 Then SRCMASK=Sprite Base(-_SRCBOB) Else SRCMASK=Icon Base(_SRCBOB)
  36.    SCR=Screen : BT=1 : PLN=Deek(SRCBASE+4)
  37.    For T=1 To PLN
  38.       BT=BT*2
  39.    Next 
  40.    XS=Deek(SRCBASE)*16 : YS=Deek(SRCBASE+2)
  41.    For SC=0 To 7
  42.       Trap Screen SC
  43.       If Errtrap=0 Then If Screen Colour=BT and Screen Width>=XS and Screen Height>=YS Then Exit 
  44.    Next 
  45.    If SC>7
  46.       FLAG=1
  47.       For SC=0 To 7
  48.          Trap Screen SC : If Errtrap<>0 : Screen Open SC,Min(32,XS),Min(32,YS),BT,Lowres : Screen Hide : Exit : End If 
  49.       Next 
  50.       If SC=8 : Error 47 : End If : Rem *** no screens usable! *** 
  51.    End If 
  52.    Screen SC
  53.    If _DESTBOB>0
  54.       Get Bob _DESTBOB,0,0 To XS,YS
  55.       If SRCMASK>0 : Paste Bob 0,0,_DESTBOB : End If 
  56.    End If 
  57.    If _DESTBOB<0
  58.       Get Icon -_DESTBOB,0,0 To XS,YS
  59.       If SRCMASK>0 : Paste Icon 0,0,_DESTBOB : End If 
  60.    End If 
  61.    If _DESTBOB>0 Then DESTBASE=Sprite Base(_DESTBOB) Else DESTBASE=Icon Base(-_DESTBOB)
  62.    If _DESTBOB>0 Then DESTMASK=Sprite Base(-_DESTBOB) Else DESTMASK=Icon Base(_DESTBOB)
  63.    SIZE=Deek(SRCBASE)*2*Deek(SRCBASE+2)*Deek(SRCBASE+4)
  64.    Copy SRCBASE+6,SRCBASE+10+SIZE To DESTBASE+6
  65.    If SRCMASK<0
  66.       If _DESTBOB>0
  67.          No Mask _DESTBOB
  68.       Else 
  69.          No Icon Mask -_DESTBOB
  70.       End If 
  71.       Pop Proc
  72.    End If 
  73.    If SRCMASK>0 Then Copy SRCMASK,SRCMASK+SIZE/Deek(SRCBASE+4)+4 To DESTMASK
  74.    Screen SCR : If FLAG Then Screen Close SC
  75. End Proc[0]